HandStack 백엔드 코드 디버깅

중단점·조사식·호출 스택으로 백엔드 오류의 발생 위치를 설명합니다.

QCN

왜 디버깅이 중요한가요?

  • 프로그래밍의 실수는 필연적입니다. 버그는 언제나 발생할 수 있습니다.
  • 디버깅은 문제의 원인을 빠르고 정확하게 찾아 해결하는 필수 개발 능력입니다.
  • 디버깅을 잘하면,
    • 개발 시간을 단축할 수 있습니다.
    • 코드의 동작 원리를 더 깊이 이해하게 됩니다.
    • 더 안정적이고 품질 높은 소프트웨어를 만들 수 있습니다.
QCN

Visual Studio 2022로 디버깅 시작하기

목표

  • Visual Studio 2022를 사용하여 HandStack 백엔드 코드의 디버깅 환경을 설정하고, 기본적인 디버깅 기능을 사용해 봅니다.

디버거란?

  • 코드의 실행을 원하는 지점에서 멈추고, 변수의 값을 확인하며, 실행 흐름을 한 단계씩 따라갈 수 있도록 도와주는 도구입니다.
QCN

VS 2022 디버거 기본 기능 (1/2) · 세부 1/3

  • 중단점 (Breakpoint) F9
    • 코드 실행을 잠시 멈추고 싶은 위치에 설정합니다.
QCN

VS 2022 디버거 기본 기능 (1/2) · 세부 2/3

  • 프로시저 단위 실행 (Step Over) F10
    • 현재 줄의 함수를 실행하고 다음 줄로 넘어갑니다. 함수 내부로 들어가지 않습니다.
QCN

VS 2022 디버거 기본 기능 (1/2) · 세부 3/3

  • 한 단계씩 코드 실행 (Step Into) F11

    • 현재 줄에 함수가 있다면 그 함수 내부로 들어갑니다.
  • 프로시저 나가기 (Step Out) Shift + F11

    • 현재 함수를 빠져나와 호출한 곳으로 돌아갑니다.
QCN

VS 2022 디버거 기본 기능 (2/2)

  • 다시 시작 (Restart) Ctrl + Shift + F5 / 중지 (Stop) Shift + F5
    • 디버깅 세션을 다시 시작하거나 완전히 종료합니다.
QCN

도구별 실행 설정 구분하기 (1/3)

  • Visual Studio: 솔루션과 시작 프로젝트 ack, 실행 프로필을 확인합니다.

  • VS Code: .vscode/launch.json의 program·cwd·환경 변수를 확인합니다.

  • 아래 JSON은 VS Code 예시입니다. 실제 빌드 경로와 .NET 대상 버전에 맞게 변경합니다.

QCN

도구별 실행 설정 구분하기 (2/3)

// .vscode/launch.json 예시 (ASP.NET Core)
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/bin/Debug/net10.0/Server.dll",
            "args": [],
            "cwd": "${workspaceFolder}",
            "stopAtEntry": false,
            // ...
QCN

도구별 실행 설정 구분하기 (3/3)

        }
    ]
}
QCN

실습: Product API 디버깅 (VS 2022) (1/2)

  1. 실습용 ProductController.cs를 엽니다. 이 경로는 예시이며, 실제로 로드한 업무 모듈의 Controller를 선택합니다.

  2. Get 또는 Post 메서드 내부 코드 라인 왼쪽에 마우스를 클릭하여 중단점을 설정합니다. (빨간 원 표시)

  3. Visual Studio의 시작 프로젝트와 프로필을 확인하고 F5로 디버깅을 시작합니다.

  4. Postman이나 웹 브라우저를 사용하여 해당 API를 호출합니다.

  5. Visual Studio가 활성화되며, 중단점에서 코드 실행이 멈춥니다.

QCN

실습: Product API 디버깅 (VS 2022) (2/2)

  1. F10, F11 키를 눌러 코드 실행 흐름을 추적합니다.

  2. 마우스를 변수 위에 올려놓거나 조사식, 지역 창에서 실시간으로 변수 값을 확인합니다.

QCN

HandStack + Visual Studio 2022

중단점이 비활성이라면 실행본·소스·PDB와 Debug 빌드 구성이 일치하는지 확인합니다. 대상 .NET SDK를 지원하는 Visual Studio 버전을 사용합니다.

QCN

JetBrains Rider로 디버깅 시작하기

목표

  • .NET 개발자들에게 인기있는 IDE, JetBrains Rider를 사용하여 HandStack 백엔드 코드를 디버깅해 봅니다.

Rider의 특징

  • 강력한 코드 분석 및 리팩토링 기능과 함께 직관적인 디버깅 환경을 제공합니다.
  • Visual Studio와 유사한 디버깅 기능을 제공하여 쉽게 적응할 수 있습니다.
QCN

Rider 디버거 기본 기능 (1/2)

단축키는 OS·키맵에 따라 다릅니다. 아래 키가 다르면 메뉴의 동작명으로 실행합니다.

  • 중단점 (Breakpoint) Ctrl + F8

  • 프로시저 단위 실행 (Step Over) F10

  • 한 단계씩 코드 실행 (Step Into) F11

  • 프로시저 나가기 (Step Out) Shift + F11

QCN

Rider 디버거 기본 기능 (2/2)

  • 다시 실행 (Rerun) Ctrl + F5 / 중지 (Stop) Shift + F5

  • 변수 감시 (Watch) 및 표현식 계산 (Evaluate Expression) 기능이 강력합니다.

QCN

디버깅 환경 설정 (Rider)

  • Rider는 프로젝트를 열 때 자동으로 실행 구성을 감지합니다.
  • 우측 상단의 실행 구성 드롭다운 메뉴에서 디버깅할 프로젝트를 선택합니다.
  • Run → Edit Configurations... 메뉴에서 .NET Launch Settings Profile 또는 .NET Project 구성을 확인하고 수정할 수 있습니다.
  • 실행할 ack 프로세스, 작업 폴더, 환경 변수, 로드 모듈을 직접 대조합니다.
QCN

실습: Product API 디버깅 (Rider) (1/2)

  1. 실습용 ProductController.cs를 엽니다. 이 경로는 예시이며, 실제로 로드한 업무 모듈의 Controller를 선택합니다.

  2. Get 또는 Post 메서드 내부 코드 라인 왼쪽 여백을 클릭하여 중단점을 설정합니다.

  3. 상단 툴바의 벌레 모양 디버그 아이콘을 클릭하거나 Shift + F9 키를 누릅니다.

  4. Postman이나 웹 브라우저를 사용하여 해당 API를 호출합니다.

QCN

실습: Product API 디버깅 (Rider) (2/2)

  1. Rider의 Debug 툴 윈도우가 나타나며, 중단점에서 실행이 멈춥니다.

  2. 디버그 패널의 아이콘이나 단축키로 코드 흐름을 추적합니다.

  3. Variables 탭에서 변수 값을 확인합니다.

QCN

HandStack + JetBrains Rider

같은 요청을 두 IDE에서 재현하고, 입력 값과 호출 스택이 같은지 비교합니다. 실제 SDK·실행 폴더가 일치해야 합니다.

QCN

잠깐, 구분해 보기

중단점이 잡히지 않으면 로직 수정부터 시작해야 할까요?

QCN

디버깅 심화: 코드 속 탐험하기

  • 기본적인 디버깅에 익숙해졌다면, 더 강력한 기능으로 복잡한 문제를 해결해 봅시다.
  • 변수, 조사식, 호출 스택은 디버깅의 핵심 3요소입니다.

목표

  • Visual Studio 2022 디버거의 고급 기능인 변수(Variables) 확인, 감시(Watch), 호출 스택(Call Stack)을 활용하여 복잡한 문제의 원인을 분석합니다.
QCN

고급 디버깅 도구 (VS 2022 기준)

  • 변수(Variables) 패널 (지역, 자동 창)
    • 현재 실행 중인 코드 범위 내의 모든 변수 값을 실시간으로 보여줍니다.
  • 조사식(Watch) 패널
    • 내가 원하는 특정 변수나 price * quantity 같은 표현식을 등록하여 값을 지속적으로 모니터링합니다.
  • 호출 스택(Call Stack) 패널
    • 현재 지점까지 어떤 함수들이 순서대로 호출되었는지 경로를 보여줍니다. "코드가 어떤 길을 걸어왔나?"를 알 수 있습니다.
QCN

조건부 중단점 & 로그 포인트 (1/2)

  • 조건부 중단점 (Conditional Breakpoint)
    • 수많은 데이터 중 특정 조건일 때만 확인하고 싶을 때 사용합니다.
    • 중단점을 우클릭하여 조건을 설정합니다. (예: request.ProductID == "A123")
    • "이 조건이 참(true)일 때만 멈춰!"
QCN

조건부 중단점 & 로그 포인트 (2/2)

  • 로그 포인트 (Logpoint)
    • 실행을 멈추지 않고, 디버그 출력 창에 원하는 메시지만 기록하고 싶을 때 사용합니다.
    • 코드에 Console.WriteLine을 추가하고 다시 빌드할 필요가 없습니다.
    • "멈추지는 말고, 현재 처리 중인 ID: {request.ProductID} 라고 알려줘!"
QCN

실습: 심화 디버깅 활용하기

  1. Product API의 로직에 계산을 위한 임시 변수들을 추가해봅니다.
  2. 특정 상품 ID가 들어왔을 때만 멈추도록 조건부 중단점을 설정합니다.
  3. 조사식 패널에 특정 변수와 계산식(예: price * 1.1)을 추가하여 값이 어떻게 변하는지 추적합니다.
  4. 호출 스택 패널을 보고, API 요청이 ASP.NET Core 프레임워크를 거쳐 컨트롤러 메서드까지 어떻게 도달했는지 호출 경로를 확인해봅니다.
QCN

재현 가능한 디버깅 결과

  • IDE의 실행 구성과 실제 서버 프로세스를 맞춥니다.
  • 중단점에서 입력·지역 변수·호출 스택을 확인합니다.
  • 조건부 중단점이나 로그 포인트로 재현하고 수정 후 같은 입력을 재시험합니다.
QCN

발표: 첫 화면의 목표를 말한 뒤 핵심 개념과 예제로 진행합니다. 확인 질문 뒤에는 답할 시간을 주고, 마지막 완료 기준을 남겨 질문을 받습니다. 발표 구성 참고: MIT OpenCourseWare, Patrick Winston, How to Speak (2018), https://ocw.mit.edu/courses/res-tll-005-how-to-speak-january-iap-2018/pages/how-to-speak/

이어지는 코드 조각입니다. 앞뒤 페이지를 순서대로 읽으며 전체 예제의 일부임을 설명합니다.

이어지는 코드 조각입니다. 앞뒤 페이지를 순서대로 읽으며 전체 예제의 일부임을 설명합니다.

질문 후 잠시 기다립니다. 답이 없으면 앞에서 본 예제를 다시 가리킵니다. 확인할 답: 실행 중인 프로세스, 빌드 구성·심볼, 요청 URL이 현재 소스와 일치하는지 확인합니다. 다음 주제로 넘어가기 전에 차이를 청중의 표현으로 한 번 확인합니다.

질문을 받는 동안 이 확인 기준을 화면에 남깁니다. 청중이 자신의 업무에 적용할 다음 행동 하나를 고르게 합니다.